package com.lczyfz.istep.modules.mobile.utils;


import org.apache.commons.lang.StringUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import java.io.*;

/**
 * JAVA FTP上传下载 助手类
 * <p/>
 * commons-net-1.4.1.jar PFTClinet jar包
 *
 * @author : JenMinZhang
 */
public class FileManagerByFtp {

    /**
     * Description: 向FTP服务器上传文件
     *
     * @param url      FTP服务器hostname
     * @param port     FTP服务器端口
     * @param username FTP登录账号
     * @param password FTP登录密码
     * @param path     FTP服务器保存目录
     * @param filename 上传到FTP服务器上的文件名
     * @param input    输入流
     * @return 成功返回true，否则返回false
     * @Version1.0
     */
    public static boolean uploadFile(
            String url,//FTP服务器hostname
            int port,//FTP服务器端口
            String username, // FTP登录账号
            String password, //FTP登录密码
            String path, //FTP服务器保存目录
            String filename, //上传到FTP服务器上的文件名
            InputStream input // 输入流
    ) {
        boolean success = false;
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            ftp.connect(url, port);//连接FTP服务器
            //如果采用默认端口，可以使用ftp.connect(url)的方式直接连接FTP服务器
            ftp.login(username, password);//登录
            reply = ftp.getReplyCode();
            System.out.println(reply);
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                System.out.println("FTP服务器 拒绝连接");
                return success;
            }
            ftp.changeWorkingDirectory(path);
            ftp.storeFile(filename, input);

            input.close();
            ftp.logout();
            success = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        }
        return success;
    }

    /**
     * 删除文件
     *
     * @param fileName 要删除的文件地址
     * @return true/false
     * @throws IOException
     */
    public static boolean delete(String fileName, FTPClient ftpClient) throws IOException {
        return ftpClient.deleteFile(fileName);
    }


    /**
     * 下载文件到指定目录
     *
     * @param ftpFile 文件服务器上的文件地址
     * @param dstFile 输出文件的路径和名称
     * @throws Exception
     */
    public static void downLoad(String ftpFile, String dstFile, FTPClient ftpClient) throws Exception {
        if (StringUtils.isBlank(ftpFile)) {
            throw new RuntimeException("【参数ftpFile为空】");
        }
        if (StringUtils.isBlank(dstFile)) {
            throw new RuntimeException("【参数dstFile为空】");
        }
        File file = new File(dstFile);
        FileOutputStream fos = new FileOutputStream(file);
        ftpClient.retrieveFile(ftpFile, fos);
        fos.flush();
        fos.close();
    }

    /**
     * 从文件服务器获取文件流
     *
     * @param ftpFile 文件服务器上的文件地址
     * @return {@link InputStream}
     * @throws IOException
     */
    public static InputStream retrieveFileStream(String ftpFile, FTPClient ftpClient) throws IOException {
        if (StringUtils.isBlank(ftpFile)) {
            throw new RuntimeException("【参数ftpFile为空】");
        }
        return ftpClient.retrieveFileStream(ftpFile);
    }

    public static void main(String[] args) {
//        try {
//            FileInputStream in=new FileInputStream(new File("F:\\istep\\istep\\src\\main\\webapp\\recordFiles\\333.mp3"));
//            boolean flag = uploadFile("139.196.48.196", 21, "root", "Lczy2016cfq", "/home/tomcat-istep-8787/webapps/istep/videoPlay/", "555.mp3", in);
//            System.out.println(flag);
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        }

        String str = "[C4,F5]\t0.43\t0.36\t0.41\t陈奕迅\t十年\n" +
                "[A3,F5]\t0.42\t0.34\t0.40\t陈小春\t乱世巨星\n" +
                "[D4,F5]\t0.45\t0.26\t0.39\t潘玮柏\t不得不爱\n" +
                "[F4,A5]\t0.40\t0.28\t0.37\t刀郎\t驼铃\n" +
                "[G4,A5]\t0.40\t0.28\t0.37\t刀郎\t情人\n" +
                "[A4,B6]\t0.37\t0.35\t0.36\t李玖哲\t想太多\n" +
                "[C4,G5]\t0.37\t0.34\t0.36\t陈小春\t独家记忆\n" +
                "[C4,G5]\t0.43\t0.20\t0.36\t李克勤\t一生不变\n" +
                "[B4,F6]\t0.39\t0.30\t0.36\t苏永康\t越吻越伤心\n" +
                "[E4,A5]\t0.36\t0.36\t0.36\t陈奕迅\t淘汰\n" +
                "[A3,F5]\t0.37\t0.33\t0.36\t李圣杰\t关于你的歌\n" +
                "[E4,E6]\t0.37\t0.30\t0.35\t苏永康\t爱一个人好难\n" +
                "[A3,A5]\t0.35\t0.35\t0.35\t李玖哲\t解脱\n" +
                "[E5,F6]\t0.38\t0.26\t0.34\t潘玮柏\t我的麦克风\n" +
                "[C4,A5]\t0.37\t0.28\t0.34\t刀郎\t冲动的惩罚\n" +
                "[F4,A5]\t0.42\t0.16\t0.34\t伍佰\t浪人情歌\n" +
                "[A3,G5]\t0.34\t0.33\t0.34\t李圣杰\t不顾一切的爱\n" +
                "[B3,G5]\t0.35\t0.30\t0.34\t苏永康\t男人不该让女人流泪\n" +
                "[D4,G5]\t0.33\t0.34\t0.33\t陈小春\t我爱的人\n" +
                "[C4,G5]\t0.41\t0.16\t0.33\t郭峰\t在你面前我好想流泪\n" +
                "[B4,F5]\t0.36\t0.26\t0.33\t潘玮柏\t反转地球\n" +
                "[C4,G5]\t0.39\t0.16\t0.32\t郭峰\t甘心情愿\n" +
                "[C4,A5]\t0.31\t0.35\t0.32\t李玖哲\t都怪我\n" +
                "[B3,F5]\t0.32\t0.28\t0.31\t刀郎\t2002年的第一场雪\n" +
                "[E4,E5]\t0.34\t0.20\t0.30\t李克勤\t护花使者\n" +
                "[D4,F5]\t0.34\t0.20\t0.30\t李克勤\t旧欢如梦\n" +
                "[C4,G5]\t0.35\t0.16\t0.30\t郭峰\t移情别恋\n" +
                "[G3,A5]\t0.34\t0.16\t0.29\t伍佰\t再度重相逢\n" +
                "[D4,B5]\t0.29\t0.28\t0.29\t刀郎\t披着羊皮的狼\n" +
                "[C4,C6]\t0.33\t0.16\t0.28\t郭峰\t让我再看你一眼\n" +
                "[D4,G5]\t0.30\t0.16\t0.26\t伍佰\t挪威的森林\n" +
                "[D3,G4]\t0.21\t0.34\t0.25\t陈小春\t算你狠\n" +
                "[C3,E4]\t0.20\t0.36\t0.25\t陈奕迅\t红玫瑰\n" +
                "[C3,G4]\t0.21\t0.33\t0.25\t李圣杰\t手放开\n" +
                "[C3,A4]\t0.19\t0.36\t0.24\t陈奕迅\t爱情转移\n" +
                "[C3,G4]\t0.20\t0.34\t0.24\t陈小春\t离不开你\n" +
                "[C3,F4]\t0.21\t0.30\t0.24\t苏永康\t那谁\n" +
                "[B2,A4]\t0.19\t0.33\t0.23\t李圣杰\t最近\n" +
                "[E3,A4]\t0.17\t0.36\t0.23\t陈奕迅\t好久不见\n" +
                "[B3,E5]\t0.26\t0.16\t0.23\t伍佰\t突然的自我\n" +
                "[G2,F4]\t0.18\t0.33\t0.23\t李圣杰\t痴心绝对\n" +
                "[B3,F5]\t0.25\t0.16\t0.23\t郭峰\t永远\n" +
                "[D3,G4]\t0.17\t0.35\t0.23\t李玖哲\t我会好好过\n" +
                "[C3,F4]\t0.18\t0.30\t0.22\t苏永康\t相遇太早\n" +
                "[G3,B4]\t0.19\t0.26\t0.21\t潘玮柏\t高手\n" +
                "[A2,G4]\t0.15\t0.35\t0.21\t李玖哲\t不完美\n" +
                "[A2,F4]\t0.20\t0.20\t0.20\t李克勤\t月半小夜曲\n" +
                "[A2,F4]\t0.17\t0.26\t0.20\t潘玮柏\t路太弯\n" +
                "[D3,G4]\t0.18\t0.16\t0.17\t伍佰\t痛哭的人\n" +
                "[C3,B4]\t0.16\t0.20\t0.17\t李克勤\t红日";

        str = str.replace("\t", "_").replace("\n", ",");
        System.out.println(str);


    }
}